<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:tns="http://tempuri.org/" targetNamespace="http://tempuri.org/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
      <s:element name="GetUsers">
        <s:complexType/>
      </s:element>
      <s:element name="GetUsersResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetUsersResult" type="tns:ArrayOfUser"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfUser">
        <s:sequence>
          <s:element maxOccurs="unbounded" minOccurs="0" name="User" nillable="true" type="tns:User"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="User">
        <s:sequence>
          <s:element maxOccurs="1" minOccurs="1" name="ID" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="0" name="FirstName" type="s:string"/>
          <s:element maxOccurs="1" minOccurs="0" name="LastName" type="s:string"/>
          <s:element maxOccurs="1" minOccurs="0" name="Email" type="s:string"/>
        </s:sequence>
      </s:complexType>
      <s:element name="GetTags">
        <s:complexType/>
      </s:element>
      <s:element name="GetTagsResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetTagsResult" type="tns:ArrayOfTag"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfTag">
        <s:sequence>
          <s:element maxOccurs="unbounded" minOccurs="0" name="Tag" nillable="true" type="tns:Tag"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Tag">
        <s:sequence>
          <s:element maxOccurs="1" minOccurs="1" name="ID" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="1" name="ParentID" nillable="true" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="0" name="Name" type="s:string"/>
        </s:sequence>
      </s:complexType>
      <s:element name="GetTagTree">
        <s:complexType/>
      </s:element>
      <s:element name="GetTagTreeResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetTagTreeResult" type="tns:TagTreeInfo"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="TagTreeInfo">
        <s:sequence>
          <s:element maxOccurs="1" minOccurs="1" name="ID" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="0" name="Name" type="s:string"/>
          <s:element maxOccurs="1" minOccurs="0" name="Children" type="tns:ArrayOfTagTreeInfo"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfTagTreeInfo">
        <s:sequence>
          <s:element maxOccurs="unbounded" minOccurs="0" name="TagTreeInfo" nillable="true" type="tns:TagTreeInfo"/>
        </s:sequence>
      </s:complexType>
      <s:element name="GetUserAlbums">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="userID" type="s:int"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetUserAlbumsResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetUserAlbumsResult" type="tns:ArrayOfAlbum"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfAlbum">
        <s:sequence>
          <s:element maxOccurs="unbounded" minOccurs="0" name="Album" nillable="true" type="tns:Album"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Album">
        <s:sequence>
          <s:element maxOccurs="1" minOccurs="1" name="ID" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="0" name="Name" type="s:string"/>
          <s:element maxOccurs="1" minOccurs="1" name="OwnerUserRef" type="s:int"/>
        </s:sequence>
      </s:complexType>
      <s:element name="GetAlbumObjects">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="albumID" type="s:int"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetAlbumObjectsResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetAlbumObjectsResult" type="tns:ArrayOfMObject"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfMObject">
        <s:sequence>
          <s:element maxOccurs="unbounded" minOccurs="0" name="MObject" nillable="true" type="tns:MObject"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="MObject">
        <s:sequence>
          <s:element maxOccurs="1" minOccurs="1" name="ID" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="1" name="ParentAlbumRef" type="s:int"/>
          <s:element maxOccurs="1" minOccurs="1" name="Type" type="s:unsignedByte"/>
        </s:sequence>
      </s:complexType>
      <s:element name="GetObjectTags">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="objID" type="s:int"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetObjectTagsResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetObjectTagsResult" type="tns:ArrayOfTag"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="AssignTagToObject">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="objID" type="s:int"/>
            <s:element maxOccurs="1" minOccurs="1" name="tagID" type="s:int"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="AssignTagToObjectResponse">
        <s:complexType/>
      </s:element>
      <s:element name="UnAssignTagFromObject">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="objID" type="s:int"/>
            <s:element maxOccurs="1" minOccurs="1" name="tagID" type="s:int"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="UnAssignTagFromObjectResponse">
        <s:complexType/>
      </s:element>
      <s:element name="GetObjectsByTag">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="tagID" type="s:int"/>
            <s:element maxOccurs="1" minOccurs="1" name="recurse" type="s:boolean"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetObjectsByTagResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="0" name="GetObjectsByTagResult" type="tns:ArrayOfMObject"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="DeleteObject">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="objID" type="s:int"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="DeleteObjectResponse">
        <s:complexType/>
      </s:element>
      <s:element name="ValidateUserPassword">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="userID" type="s:int"/>
            <s:element maxOccurs="1" minOccurs="0" name="password" type="s:string"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ValidateUserPasswordResponse">
        <s:complexType>
          <s:sequence>
            <s:element maxOccurs="1" minOccurs="1" name="ValidateUserPasswordResult" type="s:boolean"/>
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
  </wsdl:types>
  <wsdl:message name="ValidateUserPasswordSoapOut">
    <wsdl:part element="tns:ValidateUserPasswordResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="AssignTagToObjectSoapIn">
    <wsdl:part element="tns:AssignTagToObject" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="DeleteObjectSoapIn">
    <wsdl:part element="tns:DeleteObject" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetUserAlbumsSoapOut">
    <wsdl:part element="tns:GetUserAlbumsResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="ValidateUserPasswordSoapIn">
    <wsdl:part element="tns:ValidateUserPassword" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetObjectsByTagSoapIn">
    <wsdl:part element="tns:GetObjectsByTag" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetAlbumObjectsSoapOut">
    <wsdl:part element="tns:GetAlbumObjectsResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="AssignTagToObjectSoapOut">
    <wsdl:part element="tns:AssignTagToObjectResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetTagsSoapOut">
    <wsdl:part element="tns:GetTagsResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="UnAssignTagFromObjectSoapOut">
    <wsdl:part element="tns:UnAssignTagFromObjectResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetUsersSoapIn">
    <wsdl:part element="tns:GetUsers" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetObjectTagsSoapIn">
    <wsdl:part element="tns:GetObjectTags" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetTagTreeSoapIn">
    <wsdl:part element="tns:GetTagTree" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetUsersSoapOut">
    <wsdl:part element="tns:GetUsersResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetTagsSoapIn">
    <wsdl:part element="tns:GetTags" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetObjectTagsSoapOut">
    <wsdl:part element="tns:GetObjectTagsResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetTagTreeSoapOut">
    <wsdl:part element="tns:GetTagTreeResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="UnAssignTagFromObjectSoapIn">
    <wsdl:part element="tns:UnAssignTagFromObject" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetAlbumObjectsSoapIn">
    <wsdl:part element="tns:GetAlbumObjects" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetObjectsByTagSoapOut">
    <wsdl:part element="tns:GetObjectsByTagResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="DeleteObjectSoapOut">
    <wsdl:part element="tns:DeleteObjectResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="GetUserAlbumsSoapIn">
    <wsdl:part element="tns:GetUserAlbums" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="MediaWSSoap">
    <wsdl:operation name="GetUsers">
      <wsdl:input message="tns:GetUsersSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetUsersSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTags">
      <wsdl:input message="tns:GetTagsSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetTagsSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTagTree">
      <wsdl:input message="tns:GetTagTreeSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetTagTreeSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserAlbums">
      <wsdl:input message="tns:GetUserAlbumsSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetUserAlbumsSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetAlbumObjects">
      <wsdl:input message="tns:GetAlbumObjectsSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetAlbumObjectsSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetObjectTags">
      <wsdl:input message="tns:GetObjectTagsSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetObjectTagsSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="AssignTagToObject">
      <wsdl:input message="tns:AssignTagToObjectSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:AssignTagToObjectSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UnAssignTagFromObject">
      <wsdl:input message="tns:UnAssignTagFromObjectSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:UnAssignTagFromObjectSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetObjectsByTag">
      <wsdl:input message="tns:GetObjectsByTagSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:GetObjectsByTagSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="DeleteObject">
      <wsdl:input message="tns:DeleteObjectSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:DeleteObjectSoapOut">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ValidateUserPassword">
      <wsdl:input message="tns:ValidateUserPasswordSoapIn">
    </wsdl:input>
      <wsdl:output message="tns:ValidateUserPasswordSoapOut">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="MediaWSSoap" type="tns:MediaWSSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="GetUsers">
      <soap:operation soapAction="http://tempuri.org/GetUsers" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTags">
      <soap:operation soapAction="http://tempuri.org/GetTags" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTagTree">
      <soap:operation soapAction="http://tempuri.org/GetTagTree" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserAlbums">
      <soap:operation soapAction="http://tempuri.org/GetUserAlbums" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetAlbumObjects">
      <soap:operation soapAction="http://tempuri.org/GetAlbumObjects" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetObjectTags">
      <soap:operation soapAction="http://tempuri.org/GetObjectTags" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="AssignTagToObject">
      <soap:operation soapAction="http://tempuri.org/AssignTagToObject" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UnAssignTagFromObject">
      <soap:operation soapAction="http://tempuri.org/UnAssignTagFromObject" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetObjectsByTag">
      <soap:operation soapAction="http://tempuri.org/GetObjectsByTag" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="DeleteObject">
      <soap:operation soapAction="http://tempuri.org/DeleteObject" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ValidateUserPassword">
      <soap:operation soapAction="http://tempuri.org/ValidateUserPassword" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="MediaWSSoap12" type="tns:MediaWSSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="GetUsers">
      <soap12:operation soapAction="http://tempuri.org/GetUsers" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTags">
      <soap12:operation soapAction="http://tempuri.org/GetTags" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTagTree">
      <soap12:operation soapAction="http://tempuri.org/GetTagTree" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserAlbums">
      <soap12:operation soapAction="http://tempuri.org/GetUserAlbums" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetAlbumObjects">
      <soap12:operation soapAction="http://tempuri.org/GetAlbumObjects" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetObjectTags">
      <soap12:operation soapAction="http://tempuri.org/GetObjectTags" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="AssignTagToObject">
      <soap12:operation soapAction="http://tempuri.org/AssignTagToObject" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UnAssignTagFromObject">
      <soap12:operation soapAction="http://tempuri.org/UnAssignTagFromObject" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetObjectsByTag">
      <soap12:operation soapAction="http://tempuri.org/GetObjectsByTag" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="DeleteObject">
      <soap12:operation soapAction="http://tempuri.org/DeleteObject" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ValidateUserPassword">
      <soap12:operation soapAction="http://tempuri.org/ValidateUserPassword" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="MediaWS">
    <wsdl:port binding="tns:MediaWSSoap" name="MediaWSSoap">
      <soap:address location="http://localhost/Album/MediaWS.asmx"/>
    </wsdl:port>
    <wsdl:port binding="tns:MediaWSSoap12" name="MediaWSSoap12">
      <soap12:address location="http://localhost/Album/MediaWS.asmx"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>